﻿using System.Globalization;

namespace _07_C_中如何使用yield关键字
{
    internal class Program
    {
        //yield关键字 迭代器
        static void Main(string[] args)
        {
            Console.Title = "C#中如何使用yield关键字";

            //List<int> list = new List<int>();

            //for (int i = 0; i <= 10; i++)
            //{
            //    if (i % 2 == 0)
            //    {
            //        list.Add(i);
            //    }
            //}

            //list.ForEach(i => Console.WriteLine(i));

            //IEnumerable<int> nums = GetNums();

            //foreach (int num in nums)
            //{
            //    Console.WriteLine(num);
            //}

            IEnumerator<int> enumerator = GetEnumerator();
            Console.WriteLine(enumerator.Current);
            enumerator.MoveNext();
            Console.WriteLine(enumerator.Current);
            bool result = enumerator.MoveNext();
            Console.WriteLine(result);

            Console.ReadKey();
        }

        static IEnumerator<int> GetEnumerator()
        {
            int i = 1;
            while (true)
            {
                yield return i++;
            }
        }

        static IEnumerable<int> GetNums()
        {
            for (int i = 0; i <= 10; i++)
            {
                //yield break;中断
                if (i % 2 == 0)
                {
                    yield return i;
                }
            }
        }
    }
}
